1
データストリームにおける状態ベースの論理
AI037Lesson 2
00:00

C++ では、データストリームは単なるパイプではなく、 状態を持つエンティティです。 istream オブジェクト(例: std::cin )をブール条件として評価することで、プログラムはユーザー入力や外部ファイルの予測不可能な流れに適応できるようになります。

1. ストリームの真偽値としての役割

if (std::cin >> val)」という式を使うと、ストリームが有効である限り、式の戻り値は true になります。ストリームが 終端(EOF) に到達したり、無効なデータ型に遭遇すると、ストリームは「失敗」状態に遷移し、 falseを返します。

2. アンカーとプローブ

データの変化を追跡するために、 currVal (状態のアンカー)と val (アクティブなプローブ)を定義します。このロジックは、入ってくるプローブとアンカーを比較することに依存しています。一致しなければ「状態変更」の報告が発生し、非常に少ないメモリで無限のデータ処理が可能になります。

cin >> currValwhile(cin >> val)FalseEOF / 失敗

3. 複数回の読み込み操作

C++ では、ストリームの読み込みを連鎖的に実行できます: cin >> i >> j;。これにより、最初の値が i に、2番目の値が jに読み込まれ、複雑なレコードを簡潔に読み込む方法を提供します。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>